package cn.caplike.demo.repository.design.pattern.builder;

import cn.caplike.demo.repository.design.pattern.builder.builder.LogicalTableDescriptorBuilder;
import cn.caplike.demo.repository.design.pattern.builder.builder.PersonBuilder;
import cn.caplike.demo.repository.design.pattern.builder.entity.Person;
import cn.caplike.demo.repository.design.pattern.builder.entity.Student;
import cn.caplike.demo.repository.design.pattern.builder.entity.User;

public class App {

    public static void main(String[] args) {
        new App().runner();
    }

    private void runner() {
//        System.out.println("--- PersonBuilder(Consumer) ---");
//        Person person = PersonBuilder.of()
//                .with(builder -> {
//                    builder.firstName = "Li";
//                    builder.lastName = "Ke";
//                })
//                .create();
//
//        System.out.println(person);

//        System.out.println("--- LogicalTableDescriptor ---");
//        System.out.println(
//                LogicalTableDescriptorBuilder.of()
//                        .columnName("column-name").tableName("table-name")
//                        .build()
//        );
//
//        System.out.println("--- LogicalTableDescriptor ---");
//        System.out.println(
//                User.builder().username("LiKe").password("LiKe").build().toString()
//        );

        Student.of("Any").age(1).build(); // Student{name='Any', age=1, title='null'}
        Student.of("Any").title("1").build(); // Student{name='Any', age=0, title='1'}
    }

}
